﻿<?php
	include('head.php');
?>
<?php
	include('buscador.php');
?>

<?php
	include("conexionbd.php");
	
	$mysqli = abrirConexion();
	//Si no hay parámetro en la URL no se viene de la paginación
	if($_SERVER['QUERY_STRING'] == ""){
		$numPagina = 0;
		$modalidad = $_POST['cmbmodalidad'];
		$tipopropiedad = $_POST['cmbtipoprop'];
		$poblacion = $_POST['cmbpoblacion'];
		$habitaciones = $_POST['cmbhabitaciones'];
		$amueblado = $_POST['cmbamueblado'];
		$preciomaximo = $_POST['txtpreciomaximo'];			
	}
	else{ //Si hay parámetros es que se viene de la paginación		
		$numPagina = $_GET['numPag'];		
		$modalidad = $_GET['modalidad'];
		$tipopropiedad = $_GET['tipopropiedad'];
		$poblacion = $_GET['poblacion'];
		$habitaciones = $_GET['habitaciones'];
		$amueblado = $_GET['amueblado'];
		$preciomaximo = $_GET['preciomaximo'];
	}
	
	$numParentesis = 0;
	$query = "SELECT open_es_listingsdbelements.listingsdb_id, listingsdbelements_field_name, listingsdbelements_field_value, listingsdb_title FROM open_es_listingsdbelements, open_es_listingsdb WHERE (listingsdbelements_field_name = 'Poblacion' OR listingsdbelements_field_name = 'Regimen' OR listingsdbelements_field_name = 'precio' OR listingsdbelements_field_name = 'precioalquiler') AND (open_es_listingsdbelements.listingsdb_id = open_es_listingsdb.listingsdb_id)";
	if ($modalidad != "indiferente") {
		$query = $query . "AND open_es_listingsdbelements.listingsdb_id in (SELECT listingsdb_id FROM open_es_listingsdbelements WHERE (listingsdbelements_field_name = 'Regimen' AND listingsdbelements_field_value like '%$modalidad%')";
		$numParentesis++;
	}
	if ($tipopropiedad != "indiferente") {
		$query = $query . "AND open_es_listingsdbelements.listingsdb_id in (SELECT listingsdb_id FROM open_classlistingsdb, open_es_class WHERE (open_es_class.class_id = open_classlistingsdb.class_id) AND (open_es_class.class_name like '%$tipopropiedad%')";
		$numParentesis++;
	}
	if ($poblacion != "indiferente") {
		$query = $query . "AND open_es_listingsdbelements.listingsdb_id in (SELECT listingsdb_id FROM open_es_listingsdbelements WHERE (listingsdbelements_field_name = 'Zona' AND listingsdbelements_field_value like '%$poblacion%')";
		$numParentesis++;
	}
	if ($habitaciones != "indiferente") {
		$query = $query . "AND open_es_listingsdbelements.listingsdb_id in (SELECT listingsdb_id FROM open_es_listingsdbelements WHERE (listingsdbelements_field_name = 'NumHabitaciones' AND listingsdbelements_field_value = '$habitaciones')";
		$numParentesis++;
	}
	if ($amueblado != "indiferente") {
		$query = $query . "AND open_es_listingsdbelements.listingsdb_id in (SELECT listingsdb_id FROM open_es_listingsdbelements WHERE (listingsdbelements_field_name = 'Amueblado' AND listingsdbelements_field_value like '%$amueblado%')";
		$numParentesis++;
	}
	if ($preciomaximo != "") {
		$query = $query . "AND open_es_listingsdbelements.listingsdb_id in (SELECT listingsdb_id FROM open_es_listingsdbelements WHERE (listingsdbelements_field_name = 'precio' OR listingsdbelements_field_name = 'precioalquiler') AND (listingsdbelements_field_value > 1 AND listingsdbelements_field_value <= $preciomaximo)";
		$numParentesis++;
	}
	//Cerramos parentesis
	for ($i = 0; $i < $numParentesis; $i++) {
		$query = $query . ")";
	}
	$query = $query . "ORDER BY open_es_listingsdbelements.listingsdb_id ASC";
	$resultado = buscarPropiedad($mysqli,$query);
	//resultadoAux contendrá el resultado de la misma consulta repetida para usarla en la ordenación de características de cada propiedad
	$resultadoAux = buscarPropiedad($mysqli,$query);
	
	if($resultado->num_rows > 0){
		if($numPagina == 0){	//Si numPagina = 0 es que es la primera búsqueda
			$resultado->data_seek(0);
		}else{ //Si numPagina <> 0 es que viene de la paginación
			//$numPagina = $numPagina*10;						
			$indiceRegistro = (40)*$numPagina;
			$resultado->data_seek($indiceRegistro);			
		}
		mostrarResultado($numPagina, $resultado, $resultadoAux, $mysqli, $modalidad, $tipopropiedad, $poblacion, $habitaciones, $amueblado, $preciomaximo);		
	}
	else
		include('noencontrado.php');
	
	cerrarConexion($resultado, $mysqli);
?>

<?php
	//Función que muestra el número de propiedades resultante de la búsqueda
	function contarPropiedades($resultado){
		$auxProp = "";
		$num_propiedades = 0;
		while($campos = $resultado->fetch_row()){
			if ($auxProp != $campos[0]){				
				$auxProp = $campos[0];
				$num_propiedades++;				
			}
		}
		return $num_propiedades;
	}
 
	//Función que te muestra el resultado de la búsqueda
	function mostrarResultado($numPagina, $resultado, $resultadoAux, $mysqli, $modalidad, $tipopropiedad, $poblacion, $habitaciones, $amueblado, $preciomaximo){
		$auxProp = "";
		$i = 0;		
		//Mostramos el resultado de 10 en 10
		echo "<div class='row'>";
		echo "<div id='listado' class='fondo_listado col-xs-12 col-sm-12 col-md-12 col-lg-12'>";
		echo "<h3 id='titulo_seccion'> Propiedades coincidentes con la búsqueda </h3>";
		while($i < 10){	
			$campos = $resultado->fetch_row();			
			if ($campos[0] == null){
				$i = 10;
			}
			elseif ($auxProp != $campos[0]){
				//Ordenamos y almacenamos las características en matrizcaract
				$matrizCaract = OrdenarCaracteristicas($resultadoAux, $campos[0]);
				//Obtenemos la imagen de la propiedad que toca, para mostrarla
				$imagenProp = ObtenerImagenPropiedad($campos[0], $mysqli);
				//Obtenemos el tipo de la propiedad que toca, para mostrarla
				$tipoProp = ObtenerTipoPropiedad($campos[0], $mysqli);				
				
				if (array_key_exists('Poblacion', $matrizCaract))
					$poblMostrar = $matrizCaract['Poblacion'];
				else
					$poblMostrar = "";																					
				
				if (array_key_exists('Regimen', $matrizCaract))
					$regimenMostrar = $matrizCaract['Regimen'];
				else 
					$regimenMostrar = "";
								
				//El precio será de venta o alquiler dependiendo del régimen
				if ($regimenMostrar == "Alquiler"){
					if ((array_key_exists('PrecioAlquiler', $matrizCaract)) && ($matrizCaract['PrecioAlquiler'] != ""))
						$precioMostarFinal = $matrizCaract['PrecioAlquiler'];
					elseif (array_key_exists('Precio', $matrizCaract) && ($matrizCaract['Precio'] != ""))
					$precioMostarFinal = $matrizCaract['Precio'];
					else
						$precioMostarFinal = "";
				}elseif (($regimenMostrar == "Venta") || ($regimenMostrar == "Traspaso")){
					if ((array_key_exists('Precio', $matrizCaract)) && ($matrizCaract['Precio'] != ""))
						$precioMostarFinal = $matrizCaract['Precio'];
					elseif (array_key_exists('PrecioAlquiler', $matrizCaract) && ($matrizCaract['PrecioAlquiler'] != ""))
					$precioMostarFinal = $matrizCaract['PrecioAlquiler'];
					else
						$precioMostarFinal = "";
				}
				
				//Si no se ha encontrado una imágen para la propiedad ponemos el icono de "no foto"
				if (($imagenProp == null) || ($imagenProp == "") || (empty($imagenProp)))
					$imagenMostrar = "../media/no_foto.jpg";
				else
					$imagenMostrar = "../images/listing_photos/$imagenProp";
				
				//Mostramos la cajita de la propiedad
				echo "<div class='resultado_busqueda col-xs-12 col-sm-6 col-md-4 col-lg-4'>
					<div id='tipo_propiedad'> $tipoProp en  $poblMostrar </div>					
					<div id='imagen_destacada'> <a href='detalle_propiedad.php?idRef=$campos[3]'><img src='$imagenMostrar' /></a></div>
					<div id='otros_datos_prop'> 
						 
							<label id='regimen_mostrar'>En $regimenMostrar</label> 
							<label id='id_mostrar'>Nº Referencia: $campos[3]</label> 
						 
						<p id='precio_mostrar'> $precioMostarFinal €</p>
					</div>
												
				</div>";										
				$auxProp = $campos[0];	
				$i++;
			}			
		}
		echo "</div>";
		//Contamos el número de propiedades para poder establecer el número de páginas
		$resultado->data_seek(0);
		$num_propiedades = contarPropiedades($resultado);
		$num_paginas = ceil($num_propiedades/10);
		$pagina = 0;
		echo "<div id='listado_pag'>";
		$auxpag = 10+$numPagina; //Para que se muestren 10 páginas desde las que has hecho click
		if($numPagina > 0){ //Si la página actual es > 1 se va a mostrar la flechita para ir hacia detrás "<"
			$pagMostrarMenos = $numPagina-10;
			if($pagMostrarMenos < 0)
				$pagMostrarMenos = 0;
			echo"... <a id='num_pag' href='busqueda_propiedades.php?numPag=$pagMostrarMenos&modalidad=$modalidad&tipopropiedad=$tipopropiedad&poblacion=$poblacion&habitaciones=$habitaciones&amueblado=$amueblado&preciomaximo=$preciomaximo'>  <  </a> ...";
		}
		for ($i = $numPagina; $i <$num_paginas; $i++) {
			if ($i < $auxpag) {
				$pagina = $i+1; //La página a mostrar comienza en 1 no en 0
			
				//Mostramos marcado el número de la página en la que estamos
				if (($pagina-1) == $numPagina) {
					echo"<a id='num_pag_actual' href='busqueda_propiedades.php?numPag=$i&modalidad=$modalidad&tipopropiedad=$tipopropiedad&poblacion=$poblacion&habitaciones=$habitaciones&amueblado=$amueblado&preciomaximo=$preciomaximo'>  $pagina  </a>";
				}			
				else {
					echo"<a id='num_pag' href='busqueda_propiedades.php?numPag=$i&modalidad=$modalidad&tipopropiedad=$tipopropiedad&poblacion=$poblacion&habitaciones=$habitaciones&amueblado=$amueblado&preciomaximo=$preciomaximo'>  $pagina  </a>";
				}
			}
			else {
				if ($i == ($num_paginas-1)) {
					$pagina = $i+1; //La página a mostrar comienza en 1 no en 0
			
					//Mostramos marcado el número de la página en la que estamos
					if (($pagina-1) == $numPagina) {
						echo"<a id='num_pag_actual' href='busqueda_propiedades.php?numPag=$i&modalidad=$modalidad&tipopropiedad=$tipopropiedad&poblacion=$poblacion&habitaciones=$habitaciones&amueblado=$amueblado&preciomaximo=$preciomaximo'>  $pagina  </a>";
					}			
					else {
						echo"<a id='num_pag' href='busqueda_propiedades.php?numPag=$i&modalidad=$modalidad&tipopropiedad=$tipopropiedad&poblacion=$poblacion&habitaciones=$habitaciones&amueblado=$amueblado&preciomaximo=$preciomaximo'>  $pagina  </a>";
					}
				}		
				else {
					echo"... <a id='num_pag' href='busqueda_propiedades.php?numPag=$i&modalidad=$modalidad&tipopropiedad=$tipopropiedad&poblacion=$poblacion&habitaciones=$habitaciones&amueblado=$amueblado&preciomaximo=$preciomaximo'>  >  </a> ...";
					//$auxpag = $auxpag + 10;
					$i = ($num_paginas-2);
				}
			}
		}
		echo "</div>";
	}
	
	
	//Función que te genera una matriz con las características de cada propiedad
	function OrdenarCaracteristicas($resultado, $idPropiedad)
	{			
		$i = 0;
		$descripcion = "";
		$matrizCaract = array();
		//Vamos guardando los titulos formateados y el valor de las caracterísiticas
		$resultado->data_seek(0);
		while ($campos = $resultado->fetch_row()) {
			if ($campos[0] == $idPropiedad){
				switch ($campos[1]) {						
					case "precio":
						$matrizCaract = array_merge($matrizCaract, array('Precio'=>$campos[2]));
						break;
					case "precioalquiler":
						$matrizCaract = array_merge($matrizCaract, array('PrecioAlquiler'=>$campos[2]));
						break;					
					case "Poblacion":
						$matrizCaract = array_merge($matrizCaract, array('Poblacion'=>$campos[2]));
						break;					
					case "Regimen":
						$matrizCaract = array_merge($matrizCaract, array('Regimen'=>$campos[2]));
						break;					
				}			
			}		
		}			
			
		return $matrizCaract;	
	}
	
	//Función que busca la primera imágen asociada a una propiedad
	function ObtenerImagenPropiedad($idPropiedad, $mysqli){
		$imagenProp = "";
		$query = "SELECT listingsimages_file_name FROM open_es_listingsimages WHERE listingsdb_id = $idPropiedad LIMIT 0,1";
		$resultadoImg = buscarPropiedad($mysqli,$query);		
		
		if($resultadoImg->num_rows > 0){
			$campos = $resultadoImg->fetch_row();
			$imagenProp = $campos[0];
		}
		
		return $imagenProp;
	}
	
	//Función que busca el tipo de una propiedad
	function ObtenerTipoPropiedad($idPropiedad, $mysqli){
		$tipoProp = "";
		$query = "SELECT class_name FROM open_classlistingsdb, open_es_class WHERE (open_es_class.class_id = open_classlistingsdb.class_id) AND listingsdb_id = $idPropiedad";
		$resultadoTipo = buscarPropiedad($mysqli,$query);
	
		if($resultadoTipo->num_rows > 0){
			$campos = $resultadoTipo->fetch_row();
			$tipoProp = $campos[0];
		}
	
		return $tipoProp;
	}	
?>

<?php
	include('pie.php');
?>
<script>window.jQuery || document.write('<script src="../js/vendor/jquery-1.11.2.min.js"><\/script>')</script>
<script src="../js/vendor/bootstrap.js"></script>
<script src="../js/main.js"></script>